树莓派双通道隔离型CAN FD总线扩展板使用教程

您所在的位置:网站首页 wget -y 树莓派双通道隔离型CAN FD总线扩展板使用教程

树莓派双通道隔离型CAN FD总线扩展板使用教程

#树莓派双通道隔离型CAN FD总线扩展板使用教程| 来源: 网络整理| 查看: 265

说明 资料 FAQ 售后

产品概述

2-CH CAN FD HAT 是为树莓派开发的一款隔离式的双通道CAN 通信功能的扩展板,支持CAN FD。仲裁波特率高达1Mbps,数据波特率也突破传统CAN2.0的1Mbps限制,具备有多重保护。

特点基于树莓派设计,适用于Raspberry Pi Zero/Zero W/Zero WH/2B/3B/3B+/4B。支持8~24V的外部宽电压同时给树莓派和2-CH CAN FD HAT进行供电或者由树莓派直接给2-CH CAN FD HAT进行供电。支持CAN FD,数据波特率突破传统CAN2.0的1Mbps限制。预留控制接口,方便其他逻辑电压为3.3V/5V的控制器控制。CAN总线采用电气隔离,隔离电压可达5 kV。板载多个保护器件,具有短路保护,静电保护,有效抑制闪电和ESD,每通道均提供500W的雷击浪涌保护。接口带有120Ω终端电阻,可通过跳帽进行切换。可配置双通道CAN的工作方式,分别是双通道公用一组SPI或两通道分别使用两组独立的SPI。提供完善的配套资料手册及例程。产品参数输入电压: 8~26V逻辑电压: 3.3V/5VCAN控制芯片: MCP2518FDCAN收发器: MCP2562FD产品尺寸: 65.0x56.5mm固定孔通经: 3.0mm接口说明CAN接口总线功能引脚树莓派接口(BCM)树莓派接口(WPI)描述5V5V5V5V电源正GNDGNDGND电源地MISO_09(MISO)13(MISO)SPI_0时钟输入MOSI_010(MOSI)12(MOSI)SPI_0数据输入SCK_011(SCLK)14(SCLK)SPI_0数据输出CS_08(CE0)10(CE0)CAN_0片选INT_0256CAN_0中断输出MISO_19/19(MISO)13/24(MISO)SPI_1数据输出MOSI_110/20(MOSI)12/28(MOSI)SPI_1数据输入SCK_111/21(SCLK)14/29(SCLK)SPI_1时钟输入CS_17(CE1)/2611(CE1)/25CAN_1片选INT_11627CAN_1中断输出硬件说明CAN总线

CAN 模块的功能是处理所有 CAN 总线上的报文接收和发送。报文发送时,首先将报文装载到正确的报文缓冲器和控制寄存器中。通过 SPI 接口设置控制寄存器中的相应位或使用发送使能引脚均可启动发送操作。通过读取相应的寄存器可以检查通讯状态和错误。 会对在 CAN总线上检测到的任何报文进行错误检查,然后与用户定义的滤波器进行匹配,以确定是否将报文移到两个接收缓冲器中的一个。由于树莓派本身并不支持CAN总线,因此使用SPI接口的CAN控制器,搭配一个收发器完成CAN功能。MCP2518FD是Microchip公司生产的一款CAN FD(灵活数据速率)控制器,完全支持经典格式(CAN2.0)和CAN灵活数据速率(CAN FD)格式的CAN成帧。仲裁比特率高达1Mbps,数据波特率也突破传统CAN2.0的1Mbps限制,SPI时钟速度高达20MHz符合ISO11898-1:2015标准。该器件能发送和接收标准和扩展数据帧以及远程帧。 MCP2518FD 自带的32个灵活的滤波器和屏蔽对象可以过滤掉不想要的报文,因此减少了主单片机(MCU)的开销。MCU通过SPI接口与该器件连接,即树莓派通过SPI接口连接芯片,对于树莓派使用该芯片,可以通过已编写好的设备树文件来驱动该器件,更多详细请参考数据手册。

MCP2562FD是Microchip公司生产的第二代高速CAN收发器,它用于 CAN协议控制器与物理CAN总线之间的接口,支持CAN FD所需的更高数据速率,改善了最大传播延迟以支持更长的总线长度。MCP2562FD符合甚至超过汽车对CAN FD传输速率(5 Mbps)的要求、低静态电流、电磁兼容性(EMC)及静电放电(ESD)的要求,符合ISO-11898-5 物理标准及AEC-Q100 0级的测试标准,最多可连接最多可连接112个节点,更多详细请参考数据手册。

树莓派使用

在使用树莓派演示该例程时,需注意的是由于树莓派属于3.3V逻辑系统,需改变将2-CH CAN FD HAT的逻辑电压引脚跳帽到3.3V,如下图所示。

安装必要的函数库安装BCM2835, 打开树莓派终端,并运行以下指令wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gztar zxvf bcm2835-1.60.tar.gz cd bcm2835-1.60/sudo ./configuresudo makesudo make checksudo make install# 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/安装wiringPisudo apt-get install wiringpi#对于树莓派4B可能需要进行升级:wget https://project-downloads.drogon.net/wiringpi-latest.debsudo dpkg -i wiringpi-latest.debgpio -v# 运行gpio -v会出现2.52版本,如果没有出现说明安装出错安装Python函数库#python2sudo apt-get updatesudo apt-get install python-pipsudo apt-get install python-pilsudo apt-get install python-numpysudo pip install RPi.GPIOsudo pip install spidevsudo pip2 install python-can#python3sudo apt-get updatesudo apt-get install python3-pipsudo apt-get install python3-pilsudo apt-get install python3-numpysudo pip3 install RPi.GPIOsudo pip3 install spidev sudo pip3 install python-can前置工作下载及解压例程和驱动:cd ~wget wget https://www.waveshare.net/w/upload/4/46/2-CH-CAN-FD-HAT-Demo.7z7z x 2-CH-CAN-FD-HAT-Demo.7z -o./2-CH-CAN-FD-HAT-Demo安装例程依赖的Linux 内核驱动:浏览目录及修改文件权限:cd ~/2-CH-CAN-FD-HAT-Demo/Raspberry_Pi/sudo chmod -R 777 Linux_Driver/cd Linux_Driver/ls

运行安装程序sudo ./install.sh等待安装完成则会显示:

重启树莓派以应用所有设置:sudo reboot待树莓派重启后,查看SPI信息:dmesg | grep spi

A工作方式: B工作方式:注意1:出厂默认A模式,可通过更改电阻来实现B模式,A模式中两路CAN分别使用两组独立的SPI,B模式则是两路CAN公用一组SPI。如下图所示:注意2:因为采用了兼容的检测方式,所以在初始化时会有额外的信息,不影响正常使用,可忽视

配置CAN,设置波特率,工作模式,是否开启FD及配置传输缓冲区大小:波特率设置:sudo ip link set can0 up type can bitrate 1000000 dbitrate 8000000 restart-ms 1000 berr-reporting on fd onsudo ip link set can1 up type can bitrate 1000000 dbitrate 8000000 restart-ms 1000 berr-reporting on fd onsudo ifconfig can0 txqueuelen 65536sudo ifconfig can1 txqueuelen 65536

bitrate xxxxxx (bps) dbitrate xxxxxx (bps)

可配置成以下模式:

        [ loopback { on | off } ]

        [ listen-only { on | off } ]

        [ triple-sampling { on | off } ]

        [ one-shot { on | off } ]

        [ berr-reporting { on | off } ]

        FD是开启指令:

        [ fd { on | off } ]

        [ fd-non-iso { on | off } ]

更多相关CAN内核指令可以查看:https://www.kernel.org/doc/Documentation/networking/can.txt

查看ifconfig:ifconfig

开始测试:

若手上只有一个2-CH CAN FD HAT,可以将可通过将模块的CAN0_H与CAN1_H,CAN0_L与CAN1_L相连,如下图所示:

打开两个终端窗口:

其中一个终端输入接收CAN0数据指令:

candump can0

另外一个终端输入发送CAN1数据指令:

cansend can1 000##111.22.33.44演示效果如下:(左边为接收,右边为发送)

若手上有两个2-CH CAN FD HAT,可以直接将CAN_H,CAN_L两两相连。效果跟上述一样,需注意匹配好通信速率,识别ID,输出接口序号。

Python例程浏览目录:接收端运行receive.py:sudo python reveive.py发送端运行send.py:sudo python send.py

需注意的是这里的发送端是使用CAN1发送,接收端则是CAN0,具体修改可以参照下面的代码分析。

代码分析

本例程是基于python平台,确保以及安装了python-can库在发送之前要先创建一个can设备,因为前面只是启用MCP2518FD内核:os.system('sudo ip link set can0 up type can bitrate 1000000 dbitrate 8000000 restart-ms 1000 berr-reporting on fd on') 上面这条则是通过对CAN0的配置初始化并启用,且指定CAN0作为发送/接收接口。如需改成CAN1,则代码如下:os.system('sudo ip link set can1 up type can bitrate 1000000 dbitrate 8000000 restart-ms 1000 berr-reporting on fd on')

第一步:连接到CAN总线

can0 = can.interface.Bus(channel = 'can0', bustype = 'socketcan_ctypes')# socketcan_native

需改成CAN1,则代码如下:

can1 = can.interface.Bus(channel = 'can1', bustype = 'socketcan_ctypes')# socketcan_native

第二步:创建信息

msg = can.Message(arbitration_id=0x123, data=[0, 1, 2, 3, 4, 5, 6, 7], extended_id=False)

第三步:发送信息

can0.send(msg)

需改成CAN1,则代码如下:

can1.send(msg)

最后同样要关闭can设备

os.system('sudo ifconfig can0 down')

需改成CAN1,则代码如下:

os.system('sudo ifconfig can1 down')

接收数据:

msg = can0.recv(10.0) recv()中定义超时接收时间。更多请参考:https://python-can.readthedocs.io/en/stable/interfaces/socketcan.html

Arduino例程

本例程是基于Pierre Molinaro的MCP2517FD的例程进行改写,以适应2-CH CAN FD HAT,在此对Pierre Molinaro的付出表示感谢。在该例程中需要两个Arduino板子及两个2-CH CAN FD HAT,需注意的是Arduino属于5V逻辑系统,需改变将2-CH CAN FD HAT的逻辑电压引脚跳帽到5V,如下图所示:

将2-CH CAN FD HAT与Arduino相连接,具体接线如下表所示:功能引脚开发板5V5VGNDGNDMISO_0D12 (MISO)MOSI_0D11 (MOSI)SCK_0D13 (SCK)CS_0D10INT_0D2将两个2-CH CAN FD HAT 的CAN_0的H、L两两相连,设置波特率为115200,打开两个串口监视器,可看到以下结果(左边为发送次数,右边为接收的数据):

文档原理图程序示例程序相关资料MCP2518FD数据手册MCP2562FD数据手册

问题: CAN初始化失败??

 答复:

如果出现初始化失败,可以重启树莓派或者其他主控平台开发板,确保连线是否正确,及逻辑电压跳帽引脚是否选择正确。

问题:CAN接口的G引脚是否连接?

  答复:

G为信号地,也称隔离地。在工业环境当中,CAN受周围环境多变,为确保稳定性,两通信模块的G需要相连接。

问题:CAN通信速度达不到最高值?

 答复:

芯片受周围所测环境、通信距离、线材、软件等多因素的影响。在高速通信时,数据波特率可能达不到所所标称的最高熟虑,用户需根据实际测量,确保稳定,选择适合的通信速度。

问题:CAN不能正常通信?

 答复:

若初始化成功,且速度设置合适后,仍不可以正常通信。请检查下两块2-CH CAN FD HAT 的CAN_H是否与另外一块CAN_H相连,CAN_L是否与另外一块CAN_L相连,需注意的是这两条线不能接反,H对应H,L对应L。若没问题,请检查程序配置的CAN口是否正确,比如需要用到CAN0,程序代码却配置CAN1。同时也需要检查硬件是否连接正确且CAN接口存不存在短路问题,如下图所示,CAN接口与树莓派的HDMI接口误触引起短路,使得CAN不能正常通信,这时需要使用购买2-CH CAN FD HAT时配送的配件2×20PIN长排座进行增高处理。

QQ : 202004841



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3